Directed graphs often include a large number of nodes (also referred to as vertices), with complex dependencies (referred to as edges or arcs) connecting the nodes together. This raises challenges for a user who wishes to render a visual depiction of the graph. In some cases, the results are too complex and cluttered to provide meaningful insight into the characteristics of the graph. Alternatively, or in addition, the processing of a large graph may be time-consuming and resource-intensive.
Consider, for example, the visualization of a directed graph that represents a software system. In this case, the nodes of the graph may represent the components of the system, while the edges may represent relationships among the components. The literature has proposed the visualization of such graphs for various purposes. For instance, the visualization can be used to help explain the system to a new user, to optimize the system, to test the system, to detect instabilities and failures in the system, and so on. However, many software systems are extremely complex, including potentially many thousands of software components. It is a challenging task to convey salient information pertaining to the graph in visual form.